﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Entity;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using MvcFlaschi.Models;

namespace MvcFlaschi.Controllers
{
    public class HomeController : Controller
    {
        private FlaschiContext db = new FlaschiContext();

        //
        // GET: /Home/

        public ActionResult Index()
        {
            var flaschies = db.Flaschies.ToList();
            foreach (var f in flaschies)
            {
                f.FlaschiDate = f.FlaschiZeit.ToShortDateString();
                f.FlaschiTime = f.FlaschiZeit.ToShortTimeString();
            }
            return View(db.Flaschies.ToList());
        }

        //
        // GET: /Home/Details/5

        public ActionResult Details(int id = 0)
        {
            Flaschi flaschi = db.Flaschies.Find(id);
            if (flaschi == null)
            {
                return HttpNotFound();
            }
            flaschi.FlaschiDate = flaschi.FlaschiZeit.ToShortDateString();
            flaschi.FlaschiTime = flaschi.FlaschiZeit.ToShortTimeString();
            return View(flaschi);
        }

        //
        // GET: /Home/Create

        public ActionResult Create()
        {
            var m = new Flaschi();
            m.FlaschiTime = DateTime.Now.ToShortTimeString();
            return View(m);
        }

        //
        // POST: /Home/Create

        [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Create(Flaschi flaschi)
        {
            DateTime pTime;
            if (DateTime.TryParse(flaschi.FlaschiTime, out pTime) == false) ModelState.AddModelError("FlaschiTime", "Der Zeitpunkt ist keine gültige Zeit! (HH:MM)");
            //Datum bauen
            var d = flaschi.FlaschiDate + " " + flaschi.FlaschiTime;
            if (DateTime.TryParse(flaschi.FlaschiTime, out pTime) == false)
            {
                ModelState.AddModelError("FlaschiDate", "Das Datum ist kein gültiges Datum! (DD.MM.YYYY)");
                ModelState.AddModelError("FlaschiTime", "Der Zeitpunkt ist keine gültige Zeit! (HH:MM)");
            }
            if (ModelState.IsValid)
            {
                flaschi.FlaschiZeit = pTime;
                db.Flaschies.Add(flaschi);
                db.SaveChanges();
                return RedirectToAction("Index");
            }
            return View(flaschi);
        }

        //
        // GET: /Home/Edit/5

        public ActionResult Edit(int id = 0)
        {
            Flaschi flaschi = db.Flaschies.Find(id);
            if (flaschi == null)
            {
                return HttpNotFound();
            }
            flaschi.FlaschiDate = flaschi.FlaschiZeit.ToShortDateString();
            flaschi.FlaschiTime = flaschi.FlaschiZeit.ToShortTimeString();
            return View(flaschi);
        }

        //
        // POST: /Home/Edit/5

        [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Edit(Flaschi flaschi)
        {
            DateTime pTime;
            if (DateTime.TryParse(flaschi.FlaschiTime, out pTime) == false) ModelState.AddModelError("FlaschiTime", "Der Zeitpunkt ist keine gültige Zeit! (HH:MM)");
            //Datum bauen
            var d = flaschi.FlaschiDate + " " + flaschi.FlaschiTime;
            if (DateTime.TryParse(flaschi.FlaschiTime, out pTime) == false)
            {
                ModelState.AddModelError("FlaschiDate", "Das Datum ist kein gültiges Datum! (DD.MM.YYYY)");
                ModelState.AddModelError("FlaschiTime", "Der Zeitpunkt ist keine gültige Zeit! (HH:MM)");
            }
            if (ModelState.IsValid)
            {
                db.Entry(flaschi).State = EntityState.Modified;
                db.SaveChanges();
                return RedirectToAction("Index");
            }
            return View(flaschi);
        }

        [HttpPost]
        public ActionResult Remove(int id)
        {
            Flaschi flaschi = db.Flaschies.Find(id);
            if (flaschi == null)
            {
                return HttpNotFound();
            }
            try
            {
                db.Flaschies.Remove(flaschi);
                db.SaveChanges();
            }
            catch (Exception ex)
            {
                throw new HttpException(500, ex.Message);
            }
            return Json(new { message = "Eintrag wurde gelöscht" });
        }

        ////
        //// GET: /Home/Delete/5

        //public ActionResult Delete(int id = 0)
        //{
        //    Flaschi flaschi = db.Flaschies.Find(id);
        //    if (flaschi == null)
        //    {
        //        return HttpNotFound();
        //    }
        //    return View(flaschi);
        //}

        ////
        //// POST: /Home/Delete/5

        //[HttpPost, ActionName("Delete")]
        //[ValidateAntiForgeryToken]
        //public ActionResult DeleteConfirmed(int id)
        //{
        //    Flaschi flaschi = db.Flaschies.Find(id);
        //    db.Flaschies.Remove(flaschi);
        //    db.SaveChanges();
        //    return RedirectToAction("Index");
        //}

        protected override void Dispose(bool disposing)
        {
            db.Dispose();
            base.Dispose(disposing);
        }
    }
}